//
// FILE NAME: CIDZLib_StaticTrees_.hpp
//
// AUTHOR: Dean Roddey
//
// CREATED: 08/18/2004
//
// COPYRIGHT: Charmed Quark Systems, Ltd @ 2019
//
//  This software is copyrighted by 'Charmed Quark Systems, Ltd' and
//  the author (Dean Roddey.) It is licensed under the MIT Open Source
//  license:
//
//  https://opensource.org/licenses/MIT
//
// DESCRIPTION:
//
//  This is the header file for the CIDZLib_StaticTrees.hpp file. This
//  file defines some static Huffman trees that are used in the ZLib
//  process.
//
// CAVEATS/GOTCHAS:
//
// LOG:
//
//  $_CIDLib_Log_$
//
#pragma once


#pragma CIDLIB_PACK(CIDLIBPACK)

constexpr tCIDZLib_::TTreeVals atvStaticLTree[kCIDZLib_::c4LLCodes + 2] =
{
     {  12, 8 }, { 140, 8 }, {  76, 8 }, { 204, 8 }, {  44, 8 }
  ,  { 172, 8 }, { 108, 8 }, { 236, 8 }, {  28, 8 }, { 156, 8 }
  ,  {  92, 8 }, { 220, 8 }, {  60, 8 }, { 188, 8 }, { 124, 8 }
  ,  { 252, 8 }, {   2, 8 }, { 130, 8 }, {  66, 8 }, { 194, 8 }
  ,  {  34, 8 }, { 162, 8 }, {  98, 8 }, { 226, 8 }, {  18, 8 }
  ,  { 146, 8 }, {  82, 8 }, { 210, 8 }, {  50, 8 }, { 178, 8 }
  ,  { 114, 8 }, { 242, 8 }, {  10, 8 }, { 138, 8 }, {  74, 8 }
  ,  { 202, 8 }, {  42, 8 }, { 170, 8 }, { 106, 8 }, { 234, 8 }
  ,  {  26, 8 }, { 154, 8 }, {  90, 8 }, { 218, 8 }, {  58, 8 }
  ,  { 186, 8 }, { 122, 8 }, { 250, 8 }, {   6, 8 }, { 134, 8 }
  ,  {  70, 8 }, { 198, 8 }, {  38, 8 }, { 166, 8 }, { 102, 8 }
  ,  { 230, 8 }, {  22, 8 }, { 150, 8 }, {  86, 8 }, { 214, 8 }
  ,  {  54, 8 }, { 182, 8 }, { 118, 8 }, { 246, 8 }, {  14, 8 }
  ,  { 142, 8 }, {  78, 8 }, { 206, 8 }, {  46, 8 }, { 174, 8 }
  ,  { 110, 8 }, { 238, 8 }, {  30, 8 }, { 158, 8 }, {  94, 8 }
  ,  { 222, 8 }, {  62, 8 }, { 190, 8 }, { 126, 8 }, { 254, 8 }
  ,  {   1, 8 }, { 129, 8 }, {  65, 8 }, { 193, 8 }, {  33, 8 }
  ,  { 161, 8 }, {  97, 8 }, { 225, 8 }, {  17, 8 }, { 145, 8 }
  ,  {  81, 8 }, { 209, 8 }, {  49, 8 }, { 177, 8 }, { 113, 8 }
  ,  { 241, 8 }, {   9, 8 }, { 137, 8 }, {  73, 8 }, { 201, 8 }
  ,  {  41, 8 }, { 169, 8 }, { 105, 8 }, { 233, 8 }, {  25, 8 }
  ,  { 153, 8 }, {  89, 8 }, { 217, 8 }, {  57, 8 }, { 185, 8 }
  ,  { 121, 8 }, { 249, 8 }, {   5, 8 }, { 133, 8 }, {  69, 8 }
  ,  { 197, 8 }, {  37, 8 }, { 165, 8 }, { 101, 8 }, { 229, 8 }
  ,  {  21, 8 }, { 149, 8 }, {  85, 8 }, { 213, 8 }, {  53, 8 }
  ,  { 181, 8 }, { 117, 8 }, { 245, 8 }, {  13, 8 }, { 141, 8 }
  ,  {  77, 8 }, { 205, 8 }, {  45, 8 }, { 173, 8 }, { 109, 8 }
  ,  { 237, 8 }, {  29, 8 }, { 157, 8 }, {  93, 8 }, { 221, 8 }
  ,  {  61, 8 }, { 189, 8 }, { 125, 8 }, { 253, 8 }, {  19, 9 }
  ,  { 275, 9 }, { 147, 9 }, { 403, 9 }, {  83, 9 }, { 339, 9 }
  ,  { 211, 9 }, { 467, 9 }, {  51, 9 }, { 307, 9 }, { 179, 9 }
  ,  { 435, 9 }, { 115, 9 }, { 371, 9 }, { 243, 9 }, { 499, 9 }
  ,  {  11, 9 }, { 267, 9 }, { 139, 9 }, { 395, 9 }, {  75, 9 }
  ,  { 331, 9 }, { 203, 9 }, { 459, 9 }, {  43, 9 }, { 299, 9 }
  ,  { 171, 9 }, { 427, 9 }, { 107, 9 }, { 363, 9 }, { 235, 9 }
  ,  { 491, 9 }, {  27, 9 }, { 283, 9 }, { 155, 9 }, { 411, 9 }
  ,  {  91, 9 }, { 347, 9 }, { 219, 9 }, { 475, 9 }, {  59, 9 }
  ,  { 315, 9 }, { 187, 9 }, { 443, 9 }, { 123, 9 }, { 379, 9 }
  ,  { 251, 9 }, { 507, 9 }, {   7, 9 }, { 263, 9 }, { 135, 9 }
  ,  { 391, 9 }, {  71, 9 }, { 327, 9 }, { 199, 9 }, { 455, 9 }
  ,  {  39, 9 }, { 295, 9 }, { 167, 9 }, { 423, 9 }, { 103, 9 }
  ,  { 359, 9 }, { 231, 9 }, { 487, 9 }, {  23, 9 }, { 279, 9 }
  ,  { 151, 9 }, { 407, 9 }, {  87, 9 }, { 343, 9 }, { 215, 9 }
  ,  { 471, 9 }, {  55, 9 }, { 311, 9 }, { 183, 9 }, { 439, 9 }
  ,  { 119, 9 }, { 375, 9 }, { 247, 9 }, { 503, 9 }, {  15, 9 }
  ,  { 271, 9 }, { 143, 9 }, { 399, 9 }, {  79, 9 }, { 335, 9 }
  ,  { 207, 9 }, { 463, 9 }, {  47, 9 }, { 303, 9 }, { 175, 9 }
  ,  { 431, 9 }, { 111, 9 }, { 367, 9 }, { 239, 9 }, { 495, 9 }
  ,  {  31, 9 }, { 287, 9 }, { 159, 9 }, { 415, 9 }, {  95, 9 }
  ,  { 351, 9 }, { 223, 9 }, { 479, 9 }, {  63, 9 }, { 319, 9 }
  ,  { 191, 9 }, { 447, 9 }, { 127, 9 }, { 383, 9 }, { 255, 9 }
  ,  { 511, 9 }, {   0, 7 }, {  64, 7 }, {  32, 7 }, {  96, 7 }
  ,  {  16, 7 }, {  80, 7 }, {  48, 7 }, { 112, 7 }, {   8, 7 }
  ,  {  72, 7 }, {  40, 7 }, { 104, 7 }, {  24, 7 }, {  88, 7 }
  ,  {  56, 7 }, { 120, 7 }, {   4, 7 }, {  68, 7 }, {  36, 7 }
  ,  { 100, 7 }, {  20, 7 }, {  84, 7 }, {  52, 7 }, { 116, 7 }
  ,  {   3, 8 }, { 131, 8 }, {  67, 8 }, { 195, 8 }, {  35, 8 }
  ,  { 163, 8 }, {  99, 8 }, { 227, 8 }
};


constexpr tCIDZLib_::TTreeVals atvStaticDTree[kCIDZLib_::c4DistCodes] =
{
    {  0, 5 }, { 16, 5}, {  8, 5 }, { 24, 5 }, {  4, 5 }
  , { 20, 5 }, { 12, 5}, { 28, 5 }, {  2, 5 }, { 18, 5 }
  , { 10, 5 }, { 26, 5}, {  6, 5 }, { 22, 5 }, { 14, 5 }
  , { 30, 5 }, {  1, 5}, { 17, 5 }, {  9, 5 }, { 25, 5 }
  , {  5, 5 }, { 21, 5}, { 13, 5 }, { 29, 5 }, {  3, 5 }
  , { 19, 5 }, { 11, 5}, { 27, 5 }, {  7, 5 }, { 23, 5 }
};

constexpr tCIDLib::TCard1 ac1DistCode[kCIDZLib_::c4DistCodeLen] =
{
     0,  1,  2,  3,  4,  4,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8
  ,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10, 10
  , 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11
  , 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
  , 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13
  , 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
  , 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
  , 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
  , 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
  , 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15
  , 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
  , 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
  , 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 16, 17
  , 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22
  , 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
  , 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25
  , 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26
  , 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27
  , 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27
  , 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28
  , 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28
  , 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28
  , 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
  , 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
  , 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
  , 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
};


constexpr tCIDLib::TCard1 ac1LengthCode[kCIDZLib_::c4MaxMatch - kCIDZLib_::c4MinMatch + 1] =
{
     0,  1,  2,  3,  4,  5,  6,  7,  8,  8,  9,  9, 10, 10, 11, 11, 12, 12, 12, 12,
    13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
    17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
    19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
    23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
    26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
};


constexpr tCIDLib::TSInt asBaseLength[kCIDZLib_::c4LengthCodes] =
{
      0,  1,  2,  3,  4,  5,  6,  7,  8,  10,  12,  14,  16,  20
    , 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0
};


constexpr tCIDLib::TSInt asBaseDist[kCIDZLib_::c4DistCodes] =
{
        0,     1,     2,     3,     4,     6,     8,    12,    16,    24,
       32,    48,    64,    96,   128,   192,   256,   384,   512,   768,
     1024,  1536,  2048,  3072,  4096,  6144,  8192, 12288, 16384, 24576
};


#pragma CIDLIB_POPPACK

